﻿//#define _CRT_SECURE_NO_WARNINGS 1
/**
* 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
*
* 给定一个数字n，如果该数减去7后是2的幂次方，返回"YES"，否则，返回"NO"。
* @param n int整型 代表题目中的n
* @return string字符串
*/
//char* solve(int n) {
//	// write code here
//	n -= 7;
//	while (n % 2 == 0)
//	{
//		n /= 2;
//	}
//	if (n == 1)
//		return "YES";
//	return "NO";
//}


/**
* 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
*
* 给定一个数n，返回将这个数转化为八位的二进制数(不足八位，往前补0)。
* @param n int整型 代表题目中的n
* @return string字符串
*/
//char* tranBinary(int n) {
//	// write code here
//	char a[] = "00000000";
//	int i = 7;
//	while (n>0)
//	{
//		a[i] = n % 2 + '0';
//		n /= 2;
//		i--;
//	}
//	return a;
//}



/**
* 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
*
* 返回牛牛获得的快乐指数
* @param n int整型 题单里的题目数量
* @return int整型
*/
//int doQuestion(int n) {
//	// write code here
//	int i = 0;
//	int count = 0;
//	for (i = 1; i <= n; i++)
//	{
//		int ret = i;
//		for (int j = 1; j <= i / 2; j++)
//		{
//			if (i%j == 0)
//			{
//				ret += j;
//			}
//		}
//		if ((ret / i)<2)
//		{
//			count += i;
//		}
//	}
//	return count;
//}



/**
* 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
* 判断x是不是好数
* @param x int整型 待判断的数
* @return bool布尔型
*/
//int judge(int x)
//{
//	// write code here
//	int ret = x % 10;
//	while (x>9)
//	{
//		x = x / 10;
//	}
//	int a = x;
//	if (a == ret)
//	{
//		return 1;
//	}
//	else
//	{
//		return 0;
//	}
//}



/**
* 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
* 返回牛牛能喝的最多的酒
* @param m int整型 酒单价
* @param n int整型 牛牛的现金
* @return int整型
*/
//int countWine(int m, int n) {
//	// write code here
//	int ret = n / m;
//	int max = n / m;
//	int tmp = n / m;
//	while (tmp >= 2 || max >= 4)
//	{
//		int i = tmp / 2 + max / 4;
//		ret += i;
//		tmp = tmp % 2 + i;
//		max = max % 4 + i;
//	}
//	return ret;
//}



/**
* 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
*
* @param n int整型
* @param a int整型一维数组
* @param aLen int a数组长度
* @return int整型
*/
//int wwork(int n, int* a, int aLen) {
//	// write code here
//	int ret = a[n - 1];
//	int i = 0, s = 0;
//	for (i = n - 2; i >= 0; i--)
//	{
//		if (a[i]<ret)
//			ret = a[i];
//		else
//		{
//			s++;
//		}
//	}
//	return s;
//}



/**
* 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
*
* @param n long长整型 老师给牛牛的数字
* @return int整型
*/
//int mathexp(long long n) {
//	// write code here
//	long long ret = 1;
//	if (n<10 && n>-10)
//		return n;
//	while (n)
//	{
//		ret *= n % 10;
//		n /= 10;
//	}
//	return mathexp(ret);
//}



/**
* 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
*
* 给定两个数a和b，返回大于a且为b的倍数的最小整数。​
* @param a int整型 代表题目中描述的a
* @param b int整型 代表题目中描述的b
* @return int整型
*/
//int findNumber(int a, int b) {
//	// write code here
//	return ((a / b) + 1)*b;
//}



/**
* 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
* 返回牛牛能吃到的最多糖果数
* @param n long长整型
* @param k long长整型
* @return long长整型
*/
//long long Maximumcandies(long long n, long long k)
//{
//	// write code here
//	if (n >= k)
//	{
//		return 0;
//	}
//	else{
//		return (k - n) / (n + 1);
//	}
//}


/**
* 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
* 求最小差值
* @param a int整型一维数组 数组a
* @param aLen int a数组长度
* @return int整型
*/
//long minDifference(int* a, int aLen) {
//	// write code here
//	for (int i = 0; i<aLen - 1; i++)
//	{
//		for (int j = i + 1; j<aLen; j++)
//		{
//			if (a[i]>a[j])
//			{
//				int tmp = a[i];
//				a[i] = a[j];
//				a[j] = tmp;
//			}
//		}
//	}
//	long ret = a[1] - a[0];
//	for (long i = 1; i<aLen; i++)
//	{
//		if (ret>a[i] - a[i - 1])
//		{
//			ret = a[i] - a[i - 1];
//		}
//	}
//	return ret;
//}





//自动售货系统
//#include "stdio.h"
//#include "string.h"
//
//const int GoodsPrice[6] = { 2, 3, 4, 5, 8, 6 };
//int main(void)
//{
//	char c, Tempc;
//	int GoodsNum[6] = { 0 };
//	int MoneyNum[4] = { 0 };
//	int OutMoneyNum[4] = { 0 };
//	int PayMoney = 0, balance = 0;
//	char Goods0 = 0, Goods1 = 0;
//	int qType = 0;
//
//	while (EOF != scanf("%c", &c))
//	{
//		switch (c)
//		{
//		case 'r': //初始化
//			scanf("%d-%d-%d-%d-%d-%d", &GoodsNum[0], &GoodsNum[1], &GoodsNum[2], &GoodsNum[3], &GoodsNum[4], &GoodsNum[5]);
//			scanf("%d-%d-%d-%d", &MoneyNum[0], &MoneyNum[1], &MoneyNum[2], &MoneyNum[3]);
//			printf("S001:Initialization is successful\n");
//			balance = 0;
//			break;
//		case 'c': //退币
//			memset(OutMoneyNum, 0, sizeof(OutMoneyNum));
//			if (balance == 0)
//			{
//				printf("E009:Work failure\n");
//			}
//			else
//			{
//				while (balance)
//				{
//					if (balance >= 10 && MoneyNum[3]>0)
//					{
//						MoneyNum[3]--;
//						OutMoneyNum[3]++;
//						balance -= 10;
//					}
//					else if (balance >= 5 && MoneyNum[2]>0)
//					{
//						MoneyNum[2]--;
//						OutMoneyNum[2]++;
//						balance -= 5;
//					}
//					else if (balance >= 2 && MoneyNum[1]>0)
//					{
//						MoneyNum[1]--;
//						OutMoneyNum[1]++;
//						balance -= 2;
//					}
//					else if (balance >= 1 && MoneyNum[0]>0)
//					{
//						MoneyNum[0]--;
//						OutMoneyNum[0]++;
//						balance -= 1;
//					}
//				}
//				printf("1 yuan coin number=%d\n", OutMoneyNum[0]);
//				printf("2 yuan coin number=%d\n", OutMoneyNum[1]);
//				printf("5 yuan coin number=%d\n", OutMoneyNum[2]);
//				printf("10 yuan coin number=%d\n", OutMoneyNum[3]);
//			}
//			break;
//		case 'q': //查询
//			scanf("%c", &Tempc);
//			if (Tempc == ' ')
//			{
//				scanf("%d", &qType);
//				if (0 == qType)
//				{
//					printf("A1 %d %d\n", GoodsPrice[0], GoodsNum[0]);
//					printf("A2 %d %d\n", GoodsPrice[1], GoodsNum[1]);
//					printf("A3 %d %d\n", GoodsPrice[2], GoodsNum[2]);
//					printf("A4 %d %d\n", GoodsPrice[3], GoodsNum[3]);
//					printf("A5 %d %d\n", GoodsPrice[4], GoodsNum[4]);
//					printf("A6 %d %d\n", GoodsPrice[5], GoodsNum[5]);
//				}
//				else if (1 == qType)
//				{
//					printf("1 yuan coin number=%d\n", MoneyNum[0]);
//					printf("2 yuan coin number=%d\n", MoneyNum[1]);
//					printf("5 yuan coin number=%d\n", MoneyNum[2]);
//					printf("10 yuan coin number=%d\n", MoneyNum[3]);
//				}
//				else
//				{
//					printf("E010:Parameter error\n");
//				}
//			}
//			else
//			{
//				printf("E010:Parameter error\n");
//			}
//
//			break;
//		case 'p': //投币
//			scanf("%d", &PayMoney);
//			if (PayMoney == 10 || PayMoney == 5 || PayMoney == 2 || PayMoney == 1)
//			{
//				if ((PayMoney == 10 || PayMoney == 5) && ((MoneyNum[0] + MoneyNum[1] * 2)<PayMoney))
//				{
//					printf("E003:Change is not enough, pay fail\n");
//				}
//				else if (GoodsNum[0] == 0 && GoodsNum[1] == 0 && GoodsNum[2] == 0 &&
//					GoodsNum[3] == 0 && GoodsNum[4] == 0 && GoodsNum[5] == 0)
//				{
//					printf("E005:All the goods sold out\n");
//				}
//				else
//				{
//					if (PayMoney == 10)
//					{
//						MoneyNum[3]++;
//					}
//					if (PayMoney == 5)
//					{
//						MoneyNum[2]++;
//					}
//					if (PayMoney == 2)
//					{
//						MoneyNum[1]++;
//					}
//					if (PayMoney == 1)
//					{
//						MoneyNum[0]++;
//					}
//					balance += PayMoney;
//					printf("S002:Pay success,balance=%d\n", balance);
//				}
//			}
//			else
//			{
//				printf("E002:Denomination error\n");
//			}
//			break;
//		case 'b': //购买
//			scanf("%c%c%c", &Goods0, &Goods0, &Goods1);
//			Goods1 -= '0';
//			if (Goods1<1 || Goods1>6)
//			{
//				printf("E006:Goods does not exist\n");
//			}
//			else if (GoodsNum[Goods1 - 1] == 0)
//			{
//				printf("E007:The goods sold out\n");
//			}
//			else if (balance<GoodsPrice[Goods1 - 1])
//			{
//				printf("E008:Lack of balance\n");
//			}
//			else
//			{
//				GoodsNum[Goods1 - 1]--;
//				balance -= GoodsPrice[Goods1 - 1];
//				printf("S003:Buy success,balance=%d\n", balance);
//			}
//			break;
//		case ';':
//			break;
//		}
//	}
//	return 0;
//}